package com.rockcent.mall.lib.dto;

import com.rockcent.common.domain.DtoEntity;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.List;

/**
 * Created by Marco on 16-12-13.
 */
public class MerchantProductStatisticsDto extends DtoEntity {

    private String searchDateType;

    private Long productId;

    private Long marketId;

    /**
     * 统计-开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private String startDate;

    /**
     * 统计-结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private String endDate;

    /**
     * 产品来源类型(SELF:自营,MARKET:分销, ALL:全部)
     */
    private String productSourceType;

    /**
     * 类型  ALL("全部"), GOODS("商品"), SERVICE("服务")
     */
    private String type;

    /**
     * 产品名称/编号
     */
    private String keyword;

    /**
     * 访客人数
     */
    private Integer visitorCount;

    /**
     * 访问次数
     */
    private Integer clickCount;

    /**
     * 下单件数
     */
    private Long orderCount;

    /**
     * 支付件数
     */
    private Long orderPayCount;
    /**
     * 核销人数
     */
    private Long verificationCustomerCount;
    /**
     * 核销数量
     */
    private Long verificationCount;

    /**
     * 下单转化率
     */
    private String orderConversionRate;

    /**
     * 核销转化率
     */
    private String orderVerifiCationConversionRate;

    //按月访问次数
    private List<MerchantProductStatisticsDto> viewCountMonthList;
    //按月下单数量
    private List<MerchantProductStatisticsDto> saleCountMonthList;
    //按月核销数量
    private List<MerchantProductStatisticsDto> verifyCountMonthList;

    //按月访问人数
    private List<MerchantProductStatisticsDto> viewCustomerCountMonthList;
    //按月下单人数
    private List<MerchantProductStatisticsDto> saleCustomerMonthList;
    //按月核销人数
    private List<MerchantProductStatisticsDto> verifyCustomerMonthList;

    //按月下单转化率
    private List<MerchantProductStatisticsDto> orderConversionRateMonthList;
    //按月核销转化率
    private List<MerchantProductStatisticsDto> orderVerifyConversionRateMonthList;

    //展示次数
    private Long showCount;

    //数量
    private Long quantity;
    //类型
    private String chartType;
    //日期
    private String dateStr;

    //产品名称
    private String productName;
    //产品编号
    private String productItem;
    //售价
    private BigDecimal salePrice;
    //原价
    private BigDecimal originalPrice;
    //展示次数
    private Long productShowCount;

    //按小时 按天 按月
    private String groupByType;
    //渠道ID
    private Long channelId;
    //下单人数
    private Long saleCustomerCount;
    //平台ID
    private Long mallId;
    //商家ID
    private Long merchantId;

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getProductSourceType() {
        return productSourceType;
    }

    public void setProductSourceType(String productSourceType) {
        this.productSourceType = productSourceType;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public Integer getVisitorCount() {
        return visitorCount;
    }

    public void setVisitorCount(Integer visitorCount) {
        this.visitorCount = visitorCount;
    }

    public Integer getClickCount() {
        return clickCount;
    }

    public void setClickCount(Integer clickCount) {
        this.clickCount = clickCount;
    }

    public Long getOrderCount() {
        return orderCount;
    }

    public void setOrderCount(Long orderCount) {
        this.orderCount = orderCount;
    }

    public Long getOrderPayCount() {
        return orderPayCount;
    }

    public void setOrderPayCount(Long orderPayCount) {
        this.orderPayCount = orderPayCount;
    }

    public Long getVerificationCustomerCount() {
        return verificationCustomerCount;
    }

    public void setVerificationCustomerCount(Long verificationCustomerCount) {
        this.verificationCustomerCount = verificationCustomerCount;
    }

    public Long getVerificationCount() {
        return verificationCount;
    }

    public void setVerificationCount(Long verificationCount) {
        this.verificationCount = verificationCount;
    }

    public String getOrderConversionRate() {
        return orderConversionRate;
    }

    public void setOrderConversionRate(String orderConversionRate) {
        this.orderConversionRate = orderConversionRate;
    }

    public String getOrderVerifiCationConversionRate() {
        return orderVerifiCationConversionRate;
    }

    public void setOrderVerifiCationConversionRate(String orderVerifiCationConversionRate) {
        this.orderVerifiCationConversionRate = orderVerifiCationConversionRate;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductItem() {
        return productItem;
    }

    public void setProductItem(String productItem) {
        this.productItem = productItem;
    }

    public BigDecimal getSalePrice() {
        return salePrice;
    }

    public void setSalePrice(BigDecimal salePrice) {
        this.salePrice = salePrice;
    }

    public Long getProductShowCount() {
        return productShowCount;
    }

    public void setProductShowCount(Long productShowCount) {
        this.productShowCount = productShowCount;
    }

    public Long getQuantity() {
        return quantity;
    }

    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }

    public String getChartType() {
        return chartType;
    }

    public void setChartType(String chartType) {
        this.chartType = chartType;
    }

    public String getDateStr() {
        return dateStr;
    }

    public void setDateStr(String dateStr) {
        this.dateStr = dateStr;
    }

    public String getSearchDateType() {
        return searchDateType;
    }

    public void setSearchDateType(String searchDateType) {
        this.searchDateType = searchDateType;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getMarketId() {
        return marketId;
    }

    public void setMarketId(Long marketId) {
        this.marketId = marketId;
    }

    public Long getShowCount() {
        return showCount;
    }

    public void setShowCount(Long showCount) {
        this.showCount = showCount;
    }

    public List<MerchantProductStatisticsDto> getViewCountMonthList() {
        return viewCountMonthList;
    }

    public void setViewCountMonthList(List<MerchantProductStatisticsDto> viewCountMonthList) {
        this.viewCountMonthList = viewCountMonthList;
    }

    public List<MerchantProductStatisticsDto> getSaleCountMonthList() {
        return saleCountMonthList;
    }

    public void setSaleCountMonthList(List<MerchantProductStatisticsDto> saleCountMonthList) {
        this.saleCountMonthList = saleCountMonthList;
    }

    public List<MerchantProductStatisticsDto> getVerifyCountMonthList() {
        return verifyCountMonthList;
    }

    public void setVerifyCountMonthList(List<MerchantProductStatisticsDto> verifyCountMonthList) {
        this.verifyCountMonthList = verifyCountMonthList;
    }

    public List<MerchantProductStatisticsDto> getViewCustomerCountMonthList() {
        return viewCustomerCountMonthList;
    }

    public void setViewCustomerCountMonthList(List<MerchantProductStatisticsDto> viewCustomerCountMonthList) {
        this.viewCustomerCountMonthList = viewCustomerCountMonthList;
    }

    public List<MerchantProductStatisticsDto> getSaleCustomerMonthList() {
        return saleCustomerMonthList;
    }

    public void setSaleCustomerMonthList(List<MerchantProductStatisticsDto> saleCustomerMonthList) {
        this.saleCustomerMonthList = saleCustomerMonthList;
    }

    public List<MerchantProductStatisticsDto> getVerifyCustomerMonthList() {
        return verifyCustomerMonthList;
    }

    public void setVerifyCustomerMonthList(List<MerchantProductStatisticsDto> verifyCustomerMonthList) {
        this.verifyCustomerMonthList = verifyCustomerMonthList;
    }

    public List<MerchantProductStatisticsDto> getOrderConversionRateMonthList() {
        return orderConversionRateMonthList;
    }

    public void setOrderConversionRateMonthList(List<MerchantProductStatisticsDto> orderConversionRateMonthList) {
        this.orderConversionRateMonthList = orderConversionRateMonthList;
    }

    public List<MerchantProductStatisticsDto> getOrderVerifyConversionRateMonthList() {
        return orderVerifyConversionRateMonthList;
    }

    public void setOrderVerifyConversionRateMonthList(List<MerchantProductStatisticsDto> orderVerifyConversionRateMonthList) {
        this.orderVerifyConversionRateMonthList = orderVerifyConversionRateMonthList;
    }

    public BigDecimal getOriginalPrice() {
        return originalPrice;
    }

    public void setOriginalPrice(BigDecimal originalPrice) {
        this.originalPrice = originalPrice;
    }

    public String getGroupByType() {
        return groupByType;
    }

    public void setGroupByType(String groupByType) {
        this.groupByType = groupByType;
    }

    public Long getChannelId() {
        return channelId;
    }

    public void setChannelId(Long channelId) {
        this.channelId = channelId;
    }

    public Long getSaleCustomerCount() {
        return saleCustomerCount;
    }

    public void setSaleCustomerCount(Long saleCustomerCount) {
        this.saleCustomerCount = saleCustomerCount;
    }

    public Long getMallId() {
        return mallId;
    }

    public void setMallId(Long mallId) {
        this.mallId = mallId;
    }

    public Long getMerchantId() {
        return merchantId;
    }

    public void setMerchantId(Long merchantId) {
        this.merchantId = merchantId;
    }

    @Override
    public String toString() {
        return "MerchantProductStatisticsDto{" +
                "searchDateType='" + searchDateType + '\'' +
                ", productId=" + productId +
                ", marketId=" + marketId +
                ", startDate='" + startDate + '\'' +
                ", endDate='" + endDate + '\'' +
                ", productSourceType='" + productSourceType + '\'' +
                ", type='" + type + '\'' +
                ", keyword='" + keyword + '\'' +
                ", visitorCount=" + visitorCount +
                ", clickCount=" + clickCount +
                ", orderCount=" + orderCount +
                ", orderPayCount=" + orderPayCount +
                ", verificationCustomerCount=" + verificationCustomerCount +
                ", verificationCount=" + verificationCount +
                ", orderConversionRate='" + orderConversionRate + '\'' +
                ", orderVerifiCationConversionRate='" + orderVerifiCationConversionRate + '\'' +
                ", viewCountMonthList=" + viewCountMonthList +
                ", saleCountMonthList=" + saleCountMonthList +
                ", verifyCountMonthList=" + verifyCountMonthList +
                ", viewCustomerCountMonthList=" + viewCustomerCountMonthList +
                ", saleCustomerMonthList=" + saleCustomerMonthList +
                ", verifyCustomerMonthList=" + verifyCustomerMonthList +
                ", orderConversionRateMonthList=" + orderConversionRateMonthList +
                ", orderVerifyConversionRateMonthList=" + orderVerifyConversionRateMonthList +
                ", showCount=" + showCount +
                ", quantity=" + quantity +
                ", chartType='" + chartType + '\'' +
                ", dateStr='" + dateStr + '\'' +
                ", productName='" + productName + '\'' +
                ", productItem='" + productItem + '\'' +
                ", salePrice=" + salePrice +
                ", originalPrice=" + originalPrice +
                ", productShowCount=" + productShowCount +
                ", groupByType='" + groupByType + '\'' +
                ", channelId=" + channelId +
                ", saleCustomerCount=" + saleCustomerCount +
                ", mallId=" + mallId +
                ", merchantId=" + merchantId +
                '}';
    }
}
